package student.aistar.day14.enums;

/**
 * 枚举类 - 默认继承每个枚举类型默认都会自动继承
 *              java.lang.Enum<E extends Enum<E>>
 */
public enum  EnumDemo {
    //1.枚举常量, 多个枚举常量, 使用, 隔开, 最后一个枚举常量不需要使用逗号了.
    //如果最后一个枚举常量下面还有代码的话, 那么需要使用分号隔开

    //单独写的枚举常量 - 简写
    //5. 最重要的一点: 每个枚举常量都是该枚举类型的具体的实例
    //换句话说, 每定义一个枚举常量, 都会去调用构造方法
    // 枚举类型 - 替代常量接口的
    //public static final EnumDemo M = new EnumDemo();
    M("覃烽"),//public static final EnumDemo M = new EnumDemo("覃烽);
    A(1),//public static final EnumDemo M = new EnumDemo(1);
    F;//public static final EnumDemo M = new EnumDemo();

    //1.枚举可以普通常量
    private String sign;


    //2. 允许存在构造 - 访问修饰符不能是公开的, protected
    EnumDemo() {
    }

    EnumDemo(Integer id){

    }

    EnumDemo(String sign) {
        this.sign = sign;
    }

    //3. 枚举类型可以提供普通方法
    public String getSign() {
        return sign;
    }

    public static void main(String[] args) {
        //如何访问枚举常量
        System.out.println(EnumDemo.M);
        System.out.println(EnumDemo.F);

        //获取枚举的实例 - 枚举常量
        EnumDemo m = EnumDemo.M;
        System.out.println(M);//因为继承了Enum抽象类, 所以底层输出的名称[字符串]
        System.out.println(m.getSign());//枚举常量对应的一个注释的名称
    }

}
